package com.heima.item.canal;

import com.github.benmanes.caffeine.cache.Cache;
import com.heima.item.handler.RedisHandler;
import com.heima.item.pojo.Item;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ResponseStatus;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

import javax.annotation.Resource;

@CanalTable("tb_item")
@Component
public class ItemHandler implements EntryHandler<Item> {
    @Resource
    private Cache<Long,Item> itemCache;

    @Resource
    private RedisHandler redisHandler;

    @Override
    public void insert(Item item) {
        // 保存缓存到caffeine
        itemCache.put(item.getId(),item);

        // 保存缓存到redis
        redisHandler.saveItem(item);
    }

    @Override
    public void update(Item before, Item after) {
        // 保存缓存到caffeine
        itemCache.put(after.getId(),after);

        // 保存缓存到redis
        redisHandler.saveItem(after);
    }

    @Override
    public void delete(Item item) {
        // 删除缓存到caffeine
        itemCache.invalidate(item.getId());

        // 删除缓存到redis
        redisHandler.removeItem(item.getId());
    }
}
